﻿/*
----------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------
				  Universidad Nacional Autónoma de México
						Soft-Express
				 " Tomar tus ideas despierta soluciones "
					      Semestre 2012-1

   Script que crea los procedimientos almacenados para recuperación de los datos de los 8 formularios
   correspondientes a la parte del sistema de Hospital Sede, todos ellos recuperan la información en
   orden según se establece en la interfaz del sistema.

   Autor: Erick Orlando Matla Cruz (Administrador de Desarrollo)
   Fecha: 30 de Octubre del 2011

   Procedimientos Almacenados definidos como funciones postgresql en este script:
   sp_buscaDatosFormulario1
   sp_buscaDatosFormulario1aux0
   sp_buscaDatosFormulario2aux0
   sp_buscaDatosFormulario2aux1
   sp_buscaDatosFormulario2aux2
   sp_buscaDatosFormulario2aux3
   sp_buscaDatosFormulario2aux4
   sp_buscaDatosFormulario2aux5
   sp_buscaDatosFormulario2aux6
   sp_buscaDatosFormulario2
   sp_buscaDatosFormulario3
   sp_buscaDatosFormulario3aux0
   sp_buscaDatosFormulario3aux1
   sp_buscaDatosFormulario3aux2
   sp_buscaDatosFormulario3aux3
   sp_buscaDatosFormulario3aux4
   sp_buscaDatosFormulario3aux5
   sp_buscaDatosFormulario3aux6
   sp_buscaDatosFormulario4
   sp_buscaDatosFormulario4R
   sp_buscaDatosFormulario5
   sp_buscaDatosFormulario5R1
   sp_buscaDatosFormulario5R2
   sp_buscaDatosFormulario6R1
   sp_buscaDatosFormulario6R2
   sp_buscaDatosFormulario6
   sp_buscaDatosFormulario7R
   sp_buscaDatosFormulario8
   sp_buscaFormulariosVisita

----------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------
*/

/*
Procedimiento que recupera la información del Formulario1 excepto la tabla correspondiente a Información 
sobre Profesores
*/
CREATE OR REPLACE FUNCTION sp_buscaDatosFormulario1(
PnIdFormulario1	INTEGER
)
RETURNS TABLE (NombreHospital VARCHAR,sDireccion VARCHAR,sTelefono VARCHAR,sDirector VARCHAR,sTelefonoDirector VARCHAR,sJefeEnsenanza VARCHAR,
	sTelefonoJefeEnsenanza VARCHAR,sMailJefeEnsenanza VARCHAR,sNombreCurso VARCHAR,sProfesorTitular VARCHAR,sTelefonoProfesorTitular VARCHAR,
	sMailProfesorTitular VARCHAR,nEspecialistasMatutino INTEGER,nEspecialistasVespertino INTEGER,nEspecialistasNocturno INTEGER,
	nEspecialistasFinesSemana INTEGER,nCamasAdultos INTEGER,nCamasNinos INTEGER,nCunas INTEGER,nIncubadoras INTEGER,sOtrasCensables VARCHAR,
	nOtrasCensables INTEGER,sEspecificacionCensables VARCHAR,nUrgencias INTEGER,nTerapiaIntensiva INTEGER,nTerapiaIntermedia INTEGER,
	nCirugiaAmbulatoria INTEGER,nLaboratorioGabinete INTEGER,nCunasNeonatosSanos INTEGER,nCamasRecuperacionQuirofano INTEGER,nTrabajoParto INTEGER,
	sOtrasNoCensables VARCHAR,nOtrasNoCensables INTEGER,sEspecificacionNoCensables VARCHAR,sQuirofanos VARCHAR,nQuirofanos INTEGER,
	sSalasExpulsion VARCHAR,nSalasExpulsion INTEGER,sConsultaExterna VARCHAR,nConsultaExterna INTEGER,sSistemaRegistroCodificacion VARCHAR,
	nSistemaRegistroCodificacion INTEGER,sManualNormasProcedimientos VARCHAR,nManualNormasProcedimientos INTEGER,sArchivoMaterialDidactico VARCHAR,
	nArchivoMaterialDidactico INTEGER,sLaboratorioRutina VARCHAR,sCondicionesLaboratorioRutina VARCHAR,sComentariosLaboratorioRutina VARCHAR,
	sLaboratoriosEspeciales VARCHAR,sEspecificacionLaboratoriosEspeciales VARCHAR,sCondicionesLaboratoriosEspeciales VARCHAR,
	sComentarioLaboratoriosEspeciales VARCHAR,sGabinetes VARCHAR,sEspecificacionGabinetes VARCHAR,sCondicionGabinetes VARCHAR,
	sComentariosGabinetes VARCHAR,sOtrosDiagnosticoTratamiento VARCHAR,sEspecificacionOtrosDiagnosticoTratamiento VARCHAR,
	sCondicionesOtrosDiagnosticoTratamiento VARCHAR,sComentarioOtrosDiagnosticoTratamiento VARCHAR,sComiteMorbilidad  VARCHAR,
	sComiteMortalidad VARCHAR,sComiteInfecciones VARCHAR,sComiteExpedienteClinico VARCHAR,sComiteBioeticaEtica VARCHAR,sComiteAuditoriaMedica VARCHAR,
	sComiteEnsenanza VARCHAR,sComiteBioseguridad VARCHAR,sComiteCientifico VARCHAR,sOtrosComites VARCHAR,sEspecificacionOtrosComites VARCHAR,
    nIdVisita INTEGER,nIdHospital INTEGER,nIdCurso INTEGER)
AS 
$$	
	SELECT sNombreHospital,sDireccion,sTelefono,sDirector,sTelefonoDirector,sJefeEnsenanza,sTelefonoJefeEnsenanza,sMailJefeEnsenanza,
	sNombreCurso,sProfesorTitular,sTelefonoProfesorTitular,sMailProfesorTitular,nEspecialistasMatutino,nEspecialistasVespertino,
	nEspecialistasNocturno,nEspecialistasFinesSemana,nCamasAdultos,nCamasNinos,nCunas,nIncubadoras,sOtrasCensables,nOtrasCensables,
	sEspecificacionCensables,nUrgencias,nTerapiaIntensiva,nTerapiaIntermedia,nCirugiaAmbulatoria,nLaboratorioGabinete,
	nCunasNeonatosSanos,nCamasRecuperacionQuirofano,nTrabajoParto,sOtrasNoCensables,nOtrasNoCensables,
	sEspecificacionNoCensables,sQuirofanos,nQuirofanos,sSalasExpulsion,nSalasExpulsion,sConsultaExterna,
	nConsultaExterna,sSistemaRegistroCodificacion,nSistemaRegistroCodificacion,sManualNormasProcedimientos,
	nManualNormasProcedimientos,sArchivoMaterialDidactico,nArchivoMaterialDidactico,sLaboratorioRutina,
	sCondicionesLaboratorioRutina,sComentariosLaboratorioRutina,sLaboratoriosEspeciales,
	sEspecificacionLaboratoriosEspeciales,sCondicionesLaboratoriosEspeciales,sComentarioLaboratoriosEspeciales,
	sGabinetes,sEspecificacionGabinetes,sCondicionGabinetes,sComentariosGabinetes,sOtrosDiagnosticoTratamiento,
	sEspecificacionOtrosDiagnosticoTratamiento,sCondicionesOtrosDiagnosticoTratamiento,sComentarioOtrosDiagnosticoTratamiento,
	sComiteMorbilidad,sComiteMortalidad,sComiteInfecciones,sComiteExpedienteClinico,sComiteBioeticaEtica,
	sComiteAuditoriaMedica,sComiteEnsenanza,sComiteBioseguridad,sComiteCientifico,sOtrosComites,sEspecificacionOtrosComites,
	nIdVisita,Formulario1.nIdHospital,Formulario1.nIdCurso
	FROM ((Formulario1 JOIN CHospitalesSede ON Formulario1.nIdHospital = CHospitalesSede.nIdHospital) JOIN CHospitalesSede_CCursos
	ON CHospitalesSede.nIdHospital = CHospitalesSede_CCursos.nIdHospital) JOIN CCursos ON CHospitalesSede_CCursos.nIdCurso = 
	CCursos.nIdCurso
	WHERE nIdFormulario1 = $1;
$$
LANGUAGE 'sql' VOLATILE; 


/*
Procedimiento auxiliar 0 que recupera la información del Formulario1 correspondiente a la tabla Información
sobre Profesores 
*/
CREATE OR REPLACE FUNCTION sp_buscaDatosFormulario1aux0(
PnIdFormulario1	INTEGER
)
RETURNS TABLE (sNombre VARCHAR,sTipoProfesor VARCHAR,sGradoAcademico VARCHAR,nAntiguedad INTEGER,sCursosDocencia VARCHAR,
	       sCertificadoConsejoEspecialidad VARCHAR)
AS 
$$	
SELECT sNombre,sTipoProfesor,sGradoAcademico,nAntiguedad,sCursosDocencia,sCertificadoConsejoEspecialidad
FROM (Profesores JOIN Profesores_Formulario1 ON Profesores.nIdProfesor = Profesores_Formulario1.nIdProfesor) JOIN Formulario1 ON 
     Formulario1.nIdFormulario1 = Profesores_Formulario1.nIdFormulario1
WHERE Formulario1.nIdFormulario1 = $1;
$$
LANGUAGE 'sql' VOLATILE; 


/*
Procedimiento auxiliar 0 que recupera la información del Formulario2 correspondiente al top 10
Causas más frecuentes de consulta externa del servicio
*/
CREATE OR REPLACE FUNCTION sp_buscaDatosFormulario2aux0(
PnIdFormulario2	INTEGER
)
RETURNS TABLE (sNombre	VARCHAR)
AS 
$$	
SELECT sNombreCoChPComElabEgPi		
FROM Tops10
WHERE nIdFormulario2 = $1 AND sTipo LIKE 'Consulta Externa';
$$
LANGUAGE 'sql' VOLATILE; 

/*
Procedimiento auxiliar 1 que recupera la información del Formulario2 correspondiente al top 10
Causas más frecuentes de hospitalización en el servicio
*/
CREATE OR REPLACE FUNCTION sp_buscaDatosFormulario2aux1(
PnIdFormulario2	INTEGER
)
RETURNS TABLE (sNombre	VARCHAR)
AS 
$$	
SELECT sNombreCoChPComElabEgPi		
FROM Tops10
WHERE nIdFormulario2 = $1 AND sTipo LIKE 'Causa Hospitalizacion';
$$
LANGUAGE 'sql' VOLATILE; 


/*
Procedimiento auxiliar 2 que recupera la información del Formulario2 correspondiente al top 10
Procedimientos quirúrgicos que se realizaron con mayor frecuencia en el serivicio
*/
CREATE OR REPLACE FUNCTION sp_buscaDatosFormulario2aux2(
PnIdFormulario2	INTEGER
)
RETURNS TABLE (sNombre	VARCHAR)
AS 
$$	
SELECT sNombreCoChPComElabEgPi		
FROM Tops10
WHERE nIdFormulario2 = $1 AND sTipo LIKE 'Procedimiento Quirúrgico';
$$
LANGUAGE 'sql' VOLATILE; 


/*
Procedimiento auxiliar 3 que recupera la información del Formulario2 correspondiente al top 10
Complicaciones hospitalarias que se observan con mayor frecuencia en el servicio
*/
CREATE OR REPLACE FUNCTION sp_buscaDatosFormulario2aux3(
PnIdFormulario2	INTEGER
)
RETURNS TABLE (sNombre	VARCHAR)
AS 
$$	
SELECT sNombreCoChPComElabEgPi		
FROM Tops10
WHERE nIdFormulario2 = $1 AND sTipo LIKE 'Complicación Hospitalaria';
$$
LANGUAGE 'sql' VOLATILE; 


/*
Procedimiento auxiliar 4 que recupera la información del Formulario2  correspondiente al top 10
Exámenes de laboratorio más solicitados en el servicio
*/
CREATE OR REPLACE FUNCTION sp_buscaDatosFormulario2aux4(
PnIdFormulario2	INTEGER
)
RETURNS TABLE (sNombre	VARCHAR)
AS 
$$	
SELECT sNombreCoChPComElabEgPi		
FROM Tops10
WHERE nIdFormulario2 = $1 AND sTipo LIKE 'Examen Laboratorio';
$$
LANGUAGE 'sql' VOLATILE; 


/*
Procedimiento auxiliar 5 que recupera la información del Formulario2  correspondiente al top 10
Estudios de gabinete, no intervencionistas más solicitados en el servicio
*/
CREATE OR REPLACE FUNCTION sp_buscaDatosFormulario2aux5(
PnIdFormulario2	INTEGER
)
RETURNS TABLE (sNombre	VARCHAR)
AS 
$$	
SELECT sNombreCoChPComElabEgPi		
FROM Tops10
WHERE nIdFormulario2 = $1 AND sTipo LIKE 'Estudios de Gabinete';
$$
LANGUAGE 'sql' VOLATILE; 


/*
Procedimiento auxiliar 6 que recupera la información del Formulario2  correspondiente al top 10
Procedimientos diagnósticos intervencionistas  más solicitados en el servicio
*/
CREATE OR REPLACE FUNCTION sp_buscaDatosFormulario2aux6(
PnIdFormulario2	INTEGER
)
RETURNS TABLE (sNombre	VARCHAR)
AS 
$$	
SELECT sNombreCoChPComElabEgPi		
FROM Tops10
WHERE nIdFormulario2 = $1 AND sTipo LIKE 'Procedimiento Intervencionista';
$$
LANGUAGE 'sql' VOLATILE; 


/*
Procedimiento recupera el resto de la información del Formulario2
*/
CREATE OR REPLACE FUNCTION sp_buscaDatosFormulario2(
PnIdFormulario2	INTEGER
)
RETURNS TABLE (nPromedioMensualConsultasExternas INTEGER,nAltasMejoriaCuracion INTEGER,nAltasDefuncion	INTEGER,nPromedioMensualIntervenciones	INTEGER,
	       nPromedioMensualPartosAtendidos	INTEGER,nAutopistas INTEGER,nBiopsias INTEGER,nCitologias INTEGER,nIdVisita INTEGER)
AS 
$$	
SELECT nPromedioMensualConsultasExternas,nAltasMejoriaCuracion,nAltasDefuncion,nPromedioMensualIntervenciones,nPromedioMensualPartosAtendidos,
       nAutopistas,nBiopsias,nCitologias,nIdVisita
FROM Formulario2
WHERE nIdFormulario2 = $1;
$$
LANGUAGE 'sql' VOLATILE; 


/*
Procedimiento que recupera la información única del Formulario3, excepto tablas.
*/
CREATE OR REPLACE FUNCTION sp_buscaDatosFormulario3(
PnIdFormulario3	INTEGER
)
RETURNS TABLE (sPromedioMinimo	VARCHAR,nEspecificarPromedioMinimo INTEGER,sExamenNacionalResidencias VARCHAR,sExamenCompetenciaAcademicaUNAM	VARCHAR,
	       sExamenTeoricoConocimientos VARCHAR,sResidenciaRotatoria VARCHAR,sExamenPsicometrico VARCHAR,sExamenIngles VARCHAR,sExamenPracticoDestrezas VARCHAR,
	       sExamenSaludFisica VARCHAR,sEntrevistaPersonal VARCHAR,sAntecedentesInstitucionSalud VARCHAR,sEdadMaxima VARCHAR,nEspecificacionEdad INTEGER,
	       sEstudiosPreviosOtraEspecialidad VARCHAR,sOtroCriterioAdmision VARCHAR,sEspecificarCriterioAdmision VARCHAR,nDuracionCurso INTEGER,
	       sEstudiosPreviosOtraEspecialidadMedica VARCHAR,nDuracionOtraEspecialidad INTEGER,sEspecificacionOtraEspecialidad VARCHAR,sResidenciaSoloUnidad VARCHAR,
	       sUnidadesComplementarias VARCHAR,sPorObjetivos VARCHAR,sProgramaOperativo VARCHAR,sListadoTemas VARCHAR,sCartaDescriptiva VARCHAR,
	       sProgramaRotacion VARCHAR,sModular VARCHAR,sAsignaturaMaterias VARCHAR,sPorAnos VARCHAR,sPorSemestres VARCHAR,sOtraCaracteristica VARCHAR,
	       sEspecificacionOtras VARCHAR,sAlumnosResidenciasFormales VARCHAR,nActividadesTeoricasGrupo INTEGER,nActividadesTeoricasIndependientes INTEGER,
	       nPracticaClinicaIndependiente INTEGER,nPracticaClinicaTutoria INTEGER,nActividadesInvestigacion INTEGER,nActualizacion INTEGER,
	       nAplicacion INTEGER,nGeneracion INTEGER,nDesarrolloAutonomia INTEGER,nDesarrolloCapacidades INTEGER,sSituacionesDesarrolloDestrezas	VARCHAR,
	       sSituacionesGraduacionDestrezas VARCHAR,sEnsenanzaDestrezasResidentes VARCHAR,sEnsenanzaDestrezasProfesores VARCHAR,sSupervisionDominio VARCHAR,
	       sProgramanActividades VARCHAR,sExamenTeoricoOral VARCHAR,sPeriodicidadExamenTeoricoOral VARCHAR,sExamenTeoricoEscrito VARCHAR,
	       sPeriodicidadExamenTeoricoEscrito VARCHAR,sExamenPractico VARCHAR,sPeriodicidadExamenPractico VARCHAR,sListasCotejo VARCHAR,sObservacionLibre VARCHAR,
	       sGuiaObservacion VARCHAR,sEscalasEvaluativas VARCHAR,sOtroProcedimiento VARCHAR,sEspecificarOtroProcedimiento VARCHAR,sRetroalimentacion VARCHAR,
	       sPeriodicidadProgramaOperativo VARCHAR,sAlumnosEnDepartamentales VARCHAR,nProcentajeDepartamental INTEGER,nSeminarioAtencionMedica INTEGER,
	       nTrabajoAtencionMedica INTEGER,nSeminarioInvestigacion INTEGER,nSeminarioEducacion INTEGER,sDificultades VARCHAR,sEspecificacionDificultades VARCHAR,
	       sPercepcionEstres VARCHAR,sComentariosPercepcionesEstres VARCHAR,nIdVisita INTEGER
)
AS 
$$	
	SELECT sPromedioMinimo,nEspecificarPromedioMinimo,sExamenNacionalResidencias,sExamenCompetenciaAcademicaUNAM,
	       sExamenTeoricoConocimientos ,sResidenciaRotatoria ,sExamenPsicometrico ,sExamenIngles ,sExamenPracticoDestrezas ,
	       sExamenSaludFisica ,sEntrevistaPersonal ,sAntecedentesInstitucionSalud ,sEdadMaxima ,nEspecificacionEdad ,
	       sEstudiosPreviosOtraEspecialidad ,sOtroCriterioAdmision ,sEspecificarCriterioAdmision ,nDuracionCurso ,
	       sEstudiosPreviosOtraEspecialidadMedica ,nDuracionOtraEspecialidad ,sEspecificacionOtraEspecialidad ,sResidenciaSoloUnidad ,
	       sUnidadesComplementarias ,sPorObjetivos ,sProgramaOperativo ,sListadoTemas ,sCartaDescriptiva ,
	       sProgramaRotacion ,sModular ,sAsignaturaMaterias ,sPorAnos ,sPorSemestres ,sOtraCaracteristica ,
	       sEspecificacionOtras ,sAlumnosResidenciasFormales ,nActividadesTeoricasGrupo ,nActividadesTeoricasIndependientes ,
	       nPracticaClinicaIndependiente ,nPracticaClinicaTutoria ,nActividadesInvestigacion ,nActualizacion ,
	       nAplicacion ,nGeneracion ,nDesarrolloAutonomia ,nDesarrolloCapacidades ,sSituacionesDesarrolloDestrezas	,
	       sSituacionesGraduacionDestrezas ,sEnsenanzaDestrezasResidentes ,sEnsenanzaDestrezasProfesores ,sSupervisionDominio ,
	       sProgramanActividades ,sExamenTeoricoOral ,sPeriodicidadExamenTeoricoOral ,sExamenTeoricoEscrito ,
	       sPeriodicidadExamenTeoricoEscrito ,sExamenPractico ,sPeriodicidadExamenPractico ,sListasCotejo ,sObservacionLibre ,
	       sGuiaObservacion ,sEscalasEvaluativas ,sOtroProcedimiento ,sEspecificarOtroProcedimiento ,sRetroalimentacion ,
	       sPeriodicidadProgramaOperativo ,sAlumnosEnDepartamentales ,nProcentajeDepartamental ,nSeminarioAtencionMedica ,
	       nTrabajoAtencionMedica ,nSeminarioInvestigacion ,nSeminarioEducacion ,sDificultades ,sEspecificacionDificultades ,
	       sPercepcionEstres ,sComentariosPercepcionesEstres,nIdVisita
FROM Formulario3
WHERE nIdFormulario3 = $1;
$$
LANGUAGE 'sql' VOLATILE; 


/*
Procedimiento auxiliar 0 que recupera la información del Formulario3 correspondiente a la
tabla de la sección: Áreas del servicio propias de la especialidad médica para la rotación
de los residentes dentro de la unidad médica
*/
CREATE OR REPLACE FUNCTION sp_buscaDatosFormulario3aux0(
PnIdFormulario3	INTEGER
)
RETURNS TABLE (sAreaRotacion VARCHAR,nTiempoAreaRotacion INTEGER)
AS 
$$	
SELECT sAreaRotacion,nTiempoAreaRotacion
FROM AreasParaRotacionResidentes
WHERE nIdFormulario3 = $1 AND sTipoArea LIKE 'Rotación Propia de la Especialidad';
$$
LANGUAGE 'sql' VOLATILE; 


/*
Procedimiento auxiliar 1 que recupera la información del Formulario3 correspondiente a la
tabla de la sección: Servicios de otras especialidades para la rotación complementaria de
los residentes dentro de la misma unidad médica
*/
CREATE OR REPLACE FUNCTION sp_buscaDatosFormulario3aux1(
PnIdFormulario3	INTEGER
)
RETURNS TABLE (sAreaRotacion VARCHAR,nTiempoAreaRotacion INTEGER)
AS 
$$	
SELECT sAreaRotacion,nTiempoAreaRotacion
FROM AreasParaRotacionResidentes
WHERE nIdFormulario3 = $1 AND sTipoArea LIKE 'Rotación Complementaria';
$$
LANGUAGE 'sql' VOLATILE; 


/*
Procedimiento auxiliar 2 que recupera la información del Formulario3 correspondiente a la
tabla de  la sección: Nombre de las subsedes por las cuales rotan los residentes y tiempo
que permanecen en cada una.
*/
CREATE OR REPLACE FUNCTION sp_buscaDatosFormulario3aux2(
PnIdFormulario3	INTEGER
)
RETURNS TABLE (sSubsede VARCHAR,nTiempoSubsede INTEGER)
AS 
$$	
SELECT sSubsede,nTiempoSubsede
FROM SubsedesRotacionResidentes
WHERE nIdFormulario3 = $1;
$$
LANGUAGE 'sql' VOLATILE; 


/*
Procedimiento auxiliar 3 que recupera la información del Formulario3 correspondiente a la
tabla  de  la  sección :  ¿Tiene alumnos (externos) en cursos tutelares o paralelos a las
residencias formales?
*/
CREATE OR REPLACE FUNCTION sp_buscaDatosFormulario3aux3(
PnIdFormulario3	INTEGER
)
RETURNS TABLE (nExternoR1 INTEGER,nExternoR2 INTEGER,nExternoR3 INTEGER,nExternoR4 INTEGER,nExternoR5 INTEGER,nExternoR6 INTEGER,nOtrosExternos INTEGER)
AS 
$$	
SELECT nExternoR1 ,nExternoR2 ,nExternoR3 ,nExternoR4 ,nExternoR5 ,nExternoR6 ,nOtrosExternos
FROM AlumnosExternosCursos
WHERE nIdFormulario3 = $1;
$$
LANGUAGE 'sql' VOLATILE; 


/*
Procedimiento auxiliar 4 que recupera la información del Formulario3 correspondiente a la
tabla de la sección: Producción Académica-Residentes
*/
CREATE OR REPLACE FUNCTION sp_buscaDatosFormulario3aux4(
PnIdFormulario3	INTEGER
)
RETURNS TABLE (sNombre VARCHAR,sNombreTrabajoInvestigacion VARCHAR,sPublicado VARCHAR,sReferencia VARCHAR)
AS 
$$	
SELECT sNombre,sNombreTrabajoInvestigacion,sPublicado,sReferencia
FROM TrabajosInvestigacion
WHERE nIdFormulario3 = $1 AND sTipo LIKE 'Residente';
$$
LANGUAGE 'sql' VOLATILE; 


/*
Procedimiento auxiliar 5 que recupera la información del Formulario3 correspondiente a la
tabla de la sección: Producción Académica-Profesores
*/
CREATE OR REPLACE FUNCTION sp_buscaDatosFormulario3aux5(
PnIdFormulario3	INTEGER
)
RETURNS TABLE (sNombre VARCHAR,sNombreTrabajoInvestigacion VARCHAR,sPublicado VARCHAR,sReferencia VARCHAR)
AS 
$$	
SELECT sNombre,sNombreTrabajoInvestigacion,sPublicado,sReferencia
FROM TrabajosInvestigacion
WHERE nIdFormulario3 = $1 AND sTipo LIKE 'Profesor';
$$
LANGUAGE 'sql' VOLATILE; 


/*
Procedimiento auxiliar 6  que recupera la  información del Formulario3 correspondiente a la
tabla de la sección: Participación de los Profesores en conferencias, congresos, distincio-
nes obtenidas, etc.
*/
CREATE OR REPLACE FUNCTION sp_buscaDatosFormulario3aux6(
PnIdFormulario3	INTEGER
)
RETURNS TABLE (sNombreParticipacionProfesor VARCHAR,sEvento VARCHAR)
AS 
$$	
SELECT sNombreParticipacionProfesor,sEvento
FROM ParticipacionProfesores
WHERE nIdFormulario3 = $1;
$$
LANGUAGE 'sql' VOLATILE; 


/*
Procedimiento que recupera la información del Formulario4 excepto tablas en donde se especifica
información de acuerdo al tipo de residente: R1,R2,R3,R4,R5,R6, Otros
*/
CREATE OR REPLACE FUNCTION sp_buscaDatosFormulario4(
PnIdFormulario4	INTEGER
)
RETURNS TABLE (Conferencias INTEGER, SesionesClinicas INTEGER, Seminarios INTEGER, MesasRedondas INTEGER, SesionesBiograficas INTEGER,
	       Talleres INTEGER, OtrasActividades INTEGER, Tutor VARCHAR, AreasDescanso VARCHAR, Sanitarios VARCHAR, Condiciones VARCHAR,
	       PercepcionConocimientos VARCHAR,PercepcionParticipacion VARCHAR, Comentarios VARCHAR,nIdVisita INTEGER)
AS 
$$	
	SELECT nAsistenciaConferencias,nAsistenciaSesionesClinicas,nAsistenciaSeminarios,nMesasRedondas,nSesionesBiograficas,nTalleres,
	       nOtrasActividades,sAsignacionTutor,sAreasDescanso,sSanitariosPropios,sCondicionesAreas,sConocimientosPrevios,
	       sPercepcionProcesoEnseApren,sComentPercepcionProcesoEnseApren,nIdVisita
	FROM Formulario4
	WHERE nIdFormulario4 = $1;
$$
LANGUAGE 'sql' VOLATILE; 


/*
Procedimiento auxiliar 0 que recupera la información del Formulario4 correspondiente a las
tablas de información sobre residentes: R1,R2,R3,R4,R5,R6,Otro
*/
CREATE OR REPLACE FUNCTION sp_buscaDatosFormulario4R(
PnIdFormulario4	INTEGER
)
RETURNS TABLE (Tabla1 INTEGER, Tabla21 INTEGER, Tabla22 INTEGER, Tabla31 INTEGER, Tabla32 INTEGER)
AS 
$$	
	SELECT nEnsenanzaTeorica,nPracticaClinicaSupervision,nPracticaClinicaSinSupervision,nGuardiasSupervision,nGuardiasSinSupervision
	FROM Formulario4R
	WHERE nIdFormulario4 = $1;
$$
LANGUAGE 'sql' VOLATILE; 

/*
Procedimiento que recupera la información del Formulario5 excepto la información de la 
sección: Revistas
*/
CREATE OR REPLACE FUNCTION sp_buscaDatosFormulario5(
PnIdFormulario5	INTEGER
)
RETURNS TABLE (sPeliculasVideocintas VARCHAR,sGrabacionesAudio VARCHAR,sModelosPiezasMuseo VARCHAR,sProgramasComputarizados VARCHAR,sOtroMaterialDidactico VARCHAR,
	       sEspecificacionMaterialDidactico VARCHAR,sCanonesProyeccion VARCHAR,sMonitoresTv VARCHAR,sVideocasseteras VARCHAR,sComputadoras VARCHAR,
	       sOtroAudiovisual VARCHAR,sEspecificacionAudiovisual VARCHAR,sAccesoComputo VARCHAR,sExpedienteElectronico VARCHAR,sSalaJuntas VARCHAR,nNumeroSalas INTEGER,
	       nCapacidadSalas INTEGER,sAulasCurso VARCHAR,nNumeroAulasCurso INTEGER,nCapacidadAulasCurso INTEGER,sAuditorios VARCHAR,nNumeroAuditorios INTEGER,
	       nCapacidadAuditorios INTEGER,sBibliohemeroteca VARCHAR,sAccesoBibliotecasDigitales VARCHAR,sBibliotecaDigitalInstitucion VARCHAR,
	       sBibliotecaDigitalUNAM VARCHAR,sBibliotecaDigitalOtras VARCHAR,sFotocopiado VARCHAR,sBusquedaInformacion VARCHAR,sAccesoInternetNodos VARCHAR,
	       sAccesoInternetInalambrico VARCHAR,sWifiSoloBiblioteca VARCHAR,sWifiDiversosSitiosHospital VARCHAR,sWifiTodoHospital VARCHAR,
	       sDiseminacionInformacion VARCHAR,sPrestamosInterbibliotecarios VARCHAR,sPrestamosDomicilio VARCHAR,sOtrosServiciosBibliohemeroteca VARCHAR,
	       sEspecificacionServiciosBibliohemeroteca VARCHAR,sSubsidioPersonal VARCHAR,nIdVisita INTEGER)
AS 
$$	
	SELECT sPeliculasVideocintas ,sGrabacionesAudio ,sModelosPiezasMuseo ,sProgramasComputarizados ,sOtroMaterialDidactico ,
	       sEspecificacionMaterialDidactico ,sCanonesProyeccion ,sMonitoresTv ,sVideocasseteras ,sComputadoras ,
	       sOtroAudiovisual ,sEspecificacionAudiovisual ,sAccesoComputo ,sExpedienteElectronico ,sSalaJuntas ,nNumeroSalas ,
	       nCapacidadSalas ,sAulasCurso ,nNumeroAulasCurso ,nCapacidadAulasCurso ,sAuditorios ,nNumeroAuditorios ,
	       nCapacidadAuditorios ,sBibliohemeroteca ,sAccesoBibliotecasDigitales ,sBibliotecaDigitalInstitucion ,
	       sBibliotecaDigitalUNAM ,sBibliotecaDigitalOtras ,sFotocopiado ,sBusquedaInformacion ,sAccesoInternetNodos ,
	       sAccesoInternetInalambrico ,sWifiSoloBiblioteca ,sWifiDiversosSitiosHospital ,sWifiTodoHospital ,
	       sDiseminacionInformacion ,sPrestamosInterbibliotecarios ,sPrestamosDomicilio ,sOtrosServiciosBibliohemeroteca ,
	       sEspecificacionServiciosBibliohemeroteca ,sSubsidioPersonal,nIdVisita
FROM Formulario5
WHERE nIdFormulario5 = $1;
$$
LANGUAGE 'sql' VOLATILE; 


/*
Procedimiento auxiliar 0 que recupera la información del Formulario5 correspondiente a la
tabla de la sección: Revistas Nacionales
*/
CREATE OR REPLACE FUNCTION sp_buscaDatosFormulario5R1(
PnIdFormulario5	INTEGER
)
RETURNS TABLE (sNombreRevista VARCHAR)
AS 
$$	
	SELECT sNombreRevista
	FROM Revistas
	WHERE nIdFormulario5 = $1 AND sProcedencia LIKE 'Nacional';
$$
LANGUAGE 'sql' VOLATILE; 


/*
Procedimiento auxiliar 1 que recupera la información del Formulario5 correspondiente a la
tabla de la sección: Revistas Extranjeras
*/
CREATE OR REPLACE FUNCTION sp_buscaDatosFormulario5R2(
PnIdFormulario5	INTEGER 
)
RETURNS TABLE (sNombreRevista VARCHAR)
AS 
$$	
	SELECT sNombreRevista
	FROM Revistas
	WHERE nIdFormulario5 = $1 AND sProcedencia LIKE 'Extranjera';
$$
LANGUAGE 'sql' VOLATILE; 


/*
Procedimiento auxiliar 0 que recupera la información del Formulario6 correspondiente a la
tabla de la sección: De información sobre Residentes Nacionales
*/
CREATE OR REPLACE FUNCTION sp_buscaDatosFormulario6R1(
PnIdFormulario6	INTEGER
)
RETURNS TABLE (nR1 INTEGER,nR2 INTEGER,nR3 INTEGER,nR4 INTEGER,nR5 INTEGER,nR6 INTEGER,nOtros INTEGER,nTotal INTEGER)
AS 
$$	
	SELECT nR1 ,nR2 ,nR3 ,nR4 ,nR5 ,nR6 ,nOtros ,nTotal
	FROM Formulario6R
	WHERE nIdFormulario6 = $1 AND sProcedenciaMedico LIKE 'Nacionales';
$$
LANGUAGE 'sql' VOLATILE; 


/*
Procedimiento auxiliar 0 que recupera la información del Formulario6 correspondiente a la
tabla de la sección: De información sobre Residentes Extranjeros
*/
CREATE OR REPLACE FUNCTION sp_buscaDatosFormulario6R2(
PnIdFormulario6	INTEGER
)
RETURNS TABLE (nR1 INTEGER,nR2 INTEGER,nR3 INTEGER,nR4 INTEGER,nR5 INTEGER,nR6 INTEGER,nOtros INTEGER,nTotal INTEGER)
AS 
$$	
	SELECT nR1 ,nR2 ,nR3 ,nR4 ,nR5 ,nR6 ,nOtros ,nTotal
	FROM Formulario6R
	WHERE nIdFormulario6 = $1 AND sProcedenciaMedico LIKE 'Extranjeros';
$$
LANGUAGE 'sql' VOLATILE; 


/*
Procedimiento que recupera el resto de la información del Formulario6
*/
CREATE OR REPLACE FUNCTION sp_buscaDatosFormulario6(
PnIdFormulario6	INTEGER
)
RETURNS TABLE (sBecasInstitucionNacionales VARCHAR,nNumeroBecasNacionales INTEGER,sBecasInstitucionExtranjeros VARCHAR,nNumeroBecasExtranjeros INTEGER,nIdVisita INTEGER)
AS 
$$	
	SELECT sBecasInstitucionNacionales,nNumeroBecasNacionales,sBecasInstitucionExtranjeros,nNumeroBecasExtranjeros,nIdVisita
	FROM Formulario6
	WHERE nIdFormulario6 = $1;
$$
LANGUAGE 'sql' VOLATILE; 

/*
Procedimiento que recupera la información del Formulario7 correspondiente a la
tabla de la sección: Información sobre residentes R1
*/
CREATE OR REPLACE FUNCTION sp_buscaDatosFormulario7R1(
PnIdFormulario7	INTEGER
)
RETURNS TABLE (sProblemaDiagnostico VARCHAR,sManejoPacientes VARCHAR,sProcedimientosDiagnostico VARCHAR,sParticipacionIntervencion VARCHAR,
	       sPacientesCargo	VARCHAR,sActividadesServicio VARCHAR,sActividadesInvestigacion VARCHAR)
AS 
$$	
	SELECT sProblemaDiagnostico,sManejoPacientes,sProcedimientosDiagnostico,sParticipacionIntervencion,sPacientesCargo,sActividadesServicio,
	       sActividadesInvestigacion
	FROM Formulario7R
	WHERE nIdFormulario7 = $1 AND sTipoResidente LIKE 'R1';
$$
LANGUAGE 'sql' VOLATILE; 

/*
Procedimiento que recupera la información del Formulario7 correspondiente a la
tabla de la sección: Información sobre residentes R2
*/
CREATE OR REPLACE FUNCTION sp_buscaDatosFormulario7R2(
PnIdFormulario7	INTEGER
)
RETURNS TABLE (sProblemaDiagnostico VARCHAR,sManejoPacientes VARCHAR,sProcedimientosDiagnostico VARCHAR,sParticipacionIntervencion VARCHAR,
	       sPacientesCargo	VARCHAR,sActividadesServicio VARCHAR,sActividadesInvestigacion VARCHAR)
AS 
$$	
	SELECT sProblemaDiagnostico,sManejoPacientes,sProcedimientosDiagnostico,sParticipacionIntervencion,sPacientesCargo,sActividadesServicio,
	       sActividadesInvestigacion
	FROM Formulario7R
	WHERE nIdFormulario7 = $1 AND sTipoResidente LIKE 'R2';
$$
LANGUAGE 'sql' VOLATILE; 

/*
Procedimiento que recupera la información del Formulario7 correspondiente a la
tabla de la sección: Información sobre residentes R3
*/
CREATE OR REPLACE FUNCTION sp_buscaDatosFormulario7R3(
PnIdFormulario7	INTEGER
)
RETURNS TABLE (sProblemaDiagnostico VARCHAR,sManejoPacientes VARCHAR,sProcedimientosDiagnostico VARCHAR,sParticipacionIntervencion VARCHAR,
	       sPacientesCargo	VARCHAR,sActividadesServicio VARCHAR,sActividadesInvestigacion VARCHAR)
AS 
$$	
	SELECT sProblemaDiagnostico,sManejoPacientes,sProcedimientosDiagnostico,sParticipacionIntervencion,sPacientesCargo,sActividadesServicio,
	       sActividadesInvestigacion
	FROM Formulario7R
	WHERE nIdFormulario7 = $1 AND sTipoResidente LIKE 'R3';
$$
LANGUAGE 'sql' VOLATILE; 

/*
Procedimiento que recupera la información del Formulario7 correspondiente a la
tabla de la sección: Información sobre residentes R4
*/
CREATE OR REPLACE FUNCTION sp_buscaDatosFormulario7R4(
PnIdFormulario7	INTEGER
)
RETURNS TABLE (sProblemaDiagnostico VARCHAR,sManejoPacientes VARCHAR,sProcedimientosDiagnostico VARCHAR,sParticipacionIntervencion VARCHAR,
	       sPacientesCargo	VARCHAR,sActividadesServicio VARCHAR,sActividadesInvestigacion VARCHAR)
AS 
$$	
	SELECT sProblemaDiagnostico,sManejoPacientes,sProcedimientosDiagnostico,sParticipacionIntervencion,sPacientesCargo,sActividadesServicio,
	       sActividadesInvestigacion
	FROM Formulario7R
	WHERE nIdFormulario7 = $1 AND sTipoResidente LIKE 'R4';
$$
LANGUAGE 'sql' VOLATILE; 

/*
Procedimiento que recupera la información del Formulario7 correspondiente a la
tabla de la sección: Información sobre residentes R5
*/
CREATE OR REPLACE FUNCTION sp_buscaDatosFormulario7R5(
PnIdFormulario7	INTEGER
)
RETURNS TABLE (sProblemaDiagnostico VARCHAR,sManejoPacientes VARCHAR,sProcedimientosDiagnostico VARCHAR,sParticipacionIntervencion VARCHAR,
	       sPacientesCargo	VARCHAR,sActividadesServicio VARCHAR,sActividadesInvestigacion VARCHAR)
AS 
$$	
	SELECT sProblemaDiagnostico,sManejoPacientes,sProcedimientosDiagnostico,sParticipacionIntervencion,sPacientesCargo,sActividadesServicio,
	       sActividadesInvestigacion
	FROM Formulario7R
	WHERE nIdFormulario7 = $1 AND sTipoResidente LIKE 'R5';
$$
LANGUAGE 'sql' VOLATILE; 

/*
Procedimiento que recupera la información del Formulario7 correspondiente a la
tabla de la sección: Información sobre residentes R6
*/
CREATE OR REPLACE FUNCTION sp_buscaDatosFormulario7R6(
PnIdFormulario7	INTEGER
)
RETURNS TABLE (sProblemaDiagnostico VARCHAR,sManejoPacientes VARCHAR,sProcedimientosDiagnostico VARCHAR,sParticipacionIntervencion VARCHAR,
	       sPacientesCargo	VARCHAR,sActividadesServicio VARCHAR,sActividadesInvestigacion VARCHAR)
AS 
$$	
	SELECT sProblemaDiagnostico,sManejoPacientes,sProcedimientosDiagnostico,sParticipacionIntervencion,sPacientesCargo,sActividadesServicio,
	       sActividadesInvestigacion
	FROM Formulario7R
	WHERE nIdFormulario7 = $1 AND sTipoResidente LIKE 'R6';
$$
LANGUAGE 'sql' VOLATILE; 

/*
Procedimiento que recupera la información del Formulario7 correspondiente a la
tabla de la sección: Información sobre residentes RO
*/
CREATE OR REPLACE FUNCTION sp_buscaDatosFormulario7RO(
PnIdFormulario7	INTEGER
)
RETURNS TABLE (sProblemaDiagnostico VARCHAR,sManejoPacientes VARCHAR,sProcedimientosDiagnostico VARCHAR,sParticipacionIntervencion VARCHAR,
	       sPacientesCargo	VARCHAR,sActividadesServicio VARCHAR,sActividadesInvestigacion VARCHAR)
AS 
$$	
	SELECT sProblemaDiagnostico,sManejoPacientes,sProcedimientosDiagnostico,sParticipacionIntervencion,sPacientesCargo,sActividadesServicio,
	       sActividadesInvestigacion
	FROM Formulario7R
	WHERE nIdFormulario7 = $1 AND sTipoResidente LIKE 'RO';
$$
LANGUAGE 'sql' VOLATILE; 

/*
Procedimiento que recupera la información del Formulario7
*/
CREATE OR REPLACE FUNCTION sp_buscaDatosFormulario7(
PnIdFormulario7	INTEGER
)
RETURNS TABLE (nIdVisita INTEGER)
AS 
$$	
	SELECT nIdVisita
	FROM Formulario7
	WHERE nIdFormulario7 = $1;
$$
LANGUAGE 'sql' VOLATILE;

/*
Procedimiento que recupera la información del Formulario8
*/
CREATE OR REPLACE FUNCTION sp_buscaDatosFormulario8(
PnIdFormulario8	INTEGER
)
RETURNS TABLE (sConocimientosMedicos VARCHAR,sDestrezas VARCHAR,nIdVisita INTEGER)
AS 
$$	
	SELECT sConocimientosMedicos,sDestrezas,nIdVisita
	FROM Formulario8
	WHERE nIdFormulario8 = $1;
$$
LANGUAGE 'sql' VOLATILE; 

/*
Procedimiento que recupera los formularios segun si numero de visita
*/
CREATE OR REPLACE FUNCTION sp_buscaFormulariosVisita(
PsEstado	VARCHAR(15)
)
RETURNS TABLE (nIdVisita INTEGER)
AS
$$
	SELECT nIdVisita
	FROM Visitas
	WHERE sEstado LIKE $1
	ORDER BY nIdVisita ASC;
$$
LANGUAGE 'sql' VOLATILE;